
#ifndef Velyn_Console_h
#define Velyn_Console_h

#include <iostream>
#include <string>

namespace Velyn {

    namespace Graphics {
    
        namespace Console {
            
            class Console {
            
            };
        }
    }
}

#endif

/* class console {

private:
	
	// TODO: for multiple strings holds 5, or whatever
	// press up or down to scroll through strings
	std::vector<char> input;
	std::vector<char> output;
	
	enum key {
		ENTER = 3,
		RETURN = 13,
		ESC = 27,
		TILDE = 96,
		DELETE = 127
	};
	
public:
	
	void displayConsole() {
		glMatrixMode(GL_PROJECTION);
		glPushMatrix();
		glLoadIdentity();
		
		// FIXME: fix the w and h
		// gluOrtho2D(0, w, 0, h);
		gluOrtho2D(0,0,0,0);
		glMatrixMode(GL_MODELVIEW);
		glPushMatrix();
		glLoadIdentity();
		
		// all 2d objects
		buildInputConsole();
		
		glPopMatrix();
		glMatrixMode(GL_PROJECTION);
		glPopMatrix();
		glMatrixMode(GL_MODELVIEW);
	}

	void keyPress(unsigned char key, int x, int y) {
		if(key == ESC) {
			// delete whatever objects
			exit(0);
		} else if((key == ENTER) || (key == RETURN)) {
			
			// read(input) and run commands
			input.clear();
		} else if(key == DELETE) {
			
			// FIXME: do i need to check the size for a vector pop_back?
			if(input.size() > 0) {
				input.pop_back();
				// inputIndex--; ?
			}
		} else {
			input.push_back(key);
			// inputIndex++; ?
		}
	}
	
	void keyRelease(unsigned char key, int x, int y) {
		
	}
	
	void buildInputConsole() {
		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
		glColor3f(0.5, 0.5, 0.5);
		glBegin(GL_QUADS);
		// glColor4f(1.0,1.0,1.0,0.5);
		glVertex2f(0.991,-0.962);	// top right
		glVertex2f(0.991,-0.991);	// bottom right
		glVertex2f(-0.991,-0.991);	// bottom left
		glVertex2f(-0.991,-0.962);	// top left
		glEnd();
	}
	
	void buildOuputConsole() {
		glColor3f(1.0, 1.0, 1.0);
	}
	
	// FIXME: load history to a txt file?
	// read history to be able to go through previous
	// commands
	void loadHistory() {
		
	} */
	
	/* Display for console
	 void display() {
	 
	 glClearColor(0.0,0.0,0.0,1.0);
	 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
	 glLoadIdentity();
	 
	 // real camera
	 // static float x = 0.0,y = 1.75,z = 5.0,float lx = 0.0,ly = 0.0,lz = -1.0;
	 // gluLookAt(x, y, z,x + lx,y + ly,z + lz,0.0f,1.0f,0.0f);
	 // real_camera(float translate_x,float translate_y,float translate_z,float rotate_x,float rotate_y);
	 
	 // first person camera
	 // first_person_camera(translate_x,translate_y,translate_z,rotate_x,rotate_y);
	 
	 // flying camera
	 flying_first_person_camera(translate_x,translate_y,translate_z,rotate_x,rotate_y);
	 
	 // keyboard processing (movement)
	 keyboard_movement(console_active,keyboard_keys);
	 
	 // all 3d objects
	 perspective_view();
	 
	 glMatrixMode(GL_PROJECTION);
	 glPushMatrix();
	 glLoadIdentity();
	 gluOrtho2D(0,w,0,h);
	 glMatrixMode(GL_MODELVIEW);
	 glPushMatrix();
	 glLoadIdentity();
	 
	 // all 2d objects
	 ortho_view(console_active,console_string);
	 
	 glPopMatrix();
	 glMatrixMode(GL_PROJECTION);
	 glPopMatrix();
	 glMatrixMode(GL_MODELVIEW);
	 glutSwapBuffers();
	 }
}; */
